Supercomputer
I supercomputer sono dei sistemi di elaborazione progettati per ottenere potenze di calcolo estremamente elevate, dedicati ad eseguite compiti particolarmente gravosi. Ovviamente sono strumenti costosi, e normalmente sono di proprietà di società o enti di ricerca che condividono il loro utilizzo tra molti dipendenti/ricercatori: e vista la velocità attuale dello sviluppo tecnologico nel campo dell'informatica e dei microprocessori, di solito perdono l'aggettivo "super" dopo pochi anni dalla loro nascita, superati da macchine ancora più potenti.In passato, i supercomputer erano dotati di architetture più sofisticate e componentistica migliore degli usuali computer al fine di poter svolgere con maggior efficienza le elaborazioni assegnate. Tuttavia in tempi recenti (diciamo a partire dal 1990) il divario fra la potenza delle CPU per supercomputer e i normali microprocessori commerciali è andato assottigliandosi progressivamente, e l'architettura dei supercomputer ha visto crescere progressivamente il numero di CPU impiegate. Attualmente (2004) la maggior parte dei nuovi supercomputer in progetto e di quelli in funzione sono basati su cluster di centinaia o addirittura migliaia di unità di calcolo non molto più potenti di un buon personal computer, connesse da reti locali ad alta velocità e coordinate da estensioni apposite del sistema operativo adottato, generalmente una versione di Unix: una di queste estensioni, openmosix, è anche open source.
Il parallelismo sempre più massiccio dei supercomputer e in generale delle macchine nate per garantire elevate capacità di calcolo ha stimolato molte ricerche in campo software per esplicitare il parallelismo intrinseco nelle operazioni e nei programmi: queste ricerche hanno portato alla definizione di alcuni linguaggi di programmazione paralleli, come l'Occam, che è senz'altro il più diffuso del gruppo.
Table of contents |
|
Tassonomia di Flynn
Nel 1966 Michael J. Flynn classifica i sistemi di supercalcolo a seconda della molteplicità del flusso di istruzioni e del flusso dei dati che possono gestire; in seguito questa classificazione è stata estesa con una sottoclassificazione per considerare anche il tipo di architettura della memoria. In base a questa classificazione ogni sistema di calcolo rientra in una di queste categorie:
- SISD (Single Instruction Single Data)
- SIMD (Single Instruction Multiple Data)
- Processori vettoriali
- Array processor
- Array sistolici
- MISD (Multiple Instruction Single Data)
- MIMD (Multiple Instruction Multiple Data)
- Sistemi a memoria distribuita (multicomputer)
- Sistemi a memoria condivisa (multiprocessori)
- Macchine dataflow
- Macchine a riduzione
Nessun parallelismo: le operazioni vengono eseguite sequenzialmente, su un dato alla volta.
La stessa istruzione coinvolge più dati contemporaneamente.
Questo tipo di processori, oltre ai normali registri e istruzioni scalari, contiene degli speciali tipi di registri (registri vettoriali) che possono contenere N valori contemporaneamente, ed ogni operazione che coinvolga uno di questi registri viene eseguita su tutti i valori in esso memorizzati. Affinchè questo meccanismo sia efficiente è necessario che il collegamento da e verso la memoria sia molto veloce, cioè abbia una banda passante molto elevata: in questo tipo di macchine anche la memoria è organizzata in modo vettoriale, vale a dire strutturata in modo che sia possibile leggere o scrivere esattamente N valori contemporaneamente. Inoltre in genere è possibile specificare un altro registro vettoriale come destinazione dell'operazione vettoriale corrente, dove il risultato verrà ulteriormente manipolato.
Un array processor invece non ha affatto istruzioni scalari, ma solo vettoriali; è costituito da una unità di controllo (UC) che gestisce un array di processori (PE, Processor Element): i collegamenti fra PE e PE, e fra PE e memoria, sono di tipo matriciale, vale a dire che ogni PE comunica con i suoi quattro vicini, con la UC e con la memoria.
Una evoluzione dell'array processor è la Connection Machine, che al posto dei normali PE introduce delle celle costituite da un PE e una memoria locale, connesse con una topologia ipercubica.
Attualmente non esistono macchine MISD.
Più istruzioni vengono eseguite contemporaneamente su più dati diversi.
Attualmente esistono molti supercomputer sparsi per il mondo. Le applicazioni tipiche sono la metereologia e la ricerca militare, ma non mancano i sistemi utilizzati da grandi aziende. Ad esempio, tutte e tre le aziende di telefonia mobile italiane per far funzionare le loro reti utilizzano sistemi che possono essere classificati come supercomputer, così come l'AGIP e la FIAT.
Il sito www.top500.org raccoglie le statistiche dei 500 computer più veloci del mondo, che possono essere classificati come supercomputer. Il più piccolo di essi ha una velocità media di calcolo pari a 624 Gflop, corrispondente a circa mille volte quella di un comune PC. Il più grande, l'Earth Simulator situato in Giappone, è dedicato a simulazioni meteorologiche volte a prevedere gli uragani in arrivo sull'isola, e ha la sua centrale elettrica personale.
I supercomputer odierni sono prodotti da una ristretta cerchia di aziende, tra cui IBM, Sun Microsystems, HP, NEC e Fujitsu. Si vanno diffondendo i sistemi prodotti in modo "amatoriale", ossia mettendo insieme un grande numero di normali PC attraverso una rete veloce di comunicazione. Per esempio, il cluster della Virgina Tech University ha raggiunto la posizione numero tre nel novembre 2003.
I grafici costruiti dal sito (come questi) mostrano un aumento della potenza di calcolo negli anni sorprendentemente regolare.
Elenco storico dei principali supercomputer:
Vedi anche:
SISD
SIMD
Processori vettoriali
Queste macchine sono programmabili con facilità (il parallelismo è gestito in maniera del tutto trasparente al programmatore), ma danno buone prestazioni solo nel caso di algoritmi con molte istruzioni vettoriali: sono particolarmente adatte per applicazioni di calcolo scientifico. Sono anche dette macchine a parallelismo temporaleArray processor
La UC legge le istruzioni, se sono scalari le esegue lei stessa, se sono vettoriali le invia a ogni PE che si occupa di un singolo dato dell'array, in parallelo: quando tutti i PE hanno terminato la UC passa all'istruzione successiva. Per questo un array processor viene considerato una macchina a parallelismo spaziale.
Le prestazioni di un array processor sono ancora più legate al tipo di operazione: è molto veloce solo quando opera su array e vettori.Array sistolici
MISD
MIMD
Sistemi a memoria distribuita (multicomputer)
Sistemi a memoria condivisa (multiprocessori)
Macchine dataflow
Macchine a riduzione
Supercomputer esistenti
Supercomputer storici
Links
Astronomia | Biologia | Botanica | Chimica | Ecologia | Economia | Fisica | Geometria | Informatica | Matematica | Medicina | Statistica | Telecomunicazioni |